﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using ModeloGaleriaNET;
using System.Data.Objects;

namespace GaleriaNET
{
    /// <summary>
    /// Lógica de interacción para UserFilterWindow.xaml
    /// </summary>
    public partial class UserFilterWindow : Window
    {
        private List<UsuarioFilter> filters;
        private bool success;

        public UserFilterWindow()
        {
            InitializeComponent();
            filters = new List<UsuarioFilter>();
        }

        public bool Success
        {
            get { return success; }
        }

        public List<UsuarioFilter> Filters
        {
            get { return filters; }
        }

        private void btCancelar_Click(object sender, RoutedEventArgs e)
        {
            success = false;
            Close();
        }

        private void btAceptar_Click(object sender, RoutedEventArgs e)
        {
            UsuarioFilter filtro;

            // Con todos los campos vacíos, no filtra y los busca todos (los activos)

            #region DNI
            if (!string.IsNullOrWhiteSpace(tbDNI.Text))
            {
                filtro = new UsuarioFilter(@"ToLower(it.dni) like '%' + @dniInput + '%'");
                filtro.Parameters.Add(new ObjectParameter("dniInput", tbDNI.Text.ToLower()));
                filters.Add(filtro);
            }
            #endregion
            #region Nombre de usuario
            if (!string.IsNullOrWhiteSpace(tbUserName.Text))
            {
                filtro = new UsuarioFilter(@"ToLower(it.pseudonimoLocal) like '%' + @userName + '%'");
                filtro.Parameters.Add(new ObjectParameter("userName", tbUserName.Text.ToLower()));
                filters.Add(filtro);
            }
            #endregion
            #region Activo
            if (cbActivo.IsChecked != null)
            {
                if (cbActivo.IsChecked == true)
                    filtro = new UsuarioFilter(@"it.activo = true");
                else
                    filtro = new UsuarioFilter(@"it.activo = false");
     
                filters.Add(filtro);
            }
            else
            {
                filtro = new UsuarioFilter(@"it.activo = true");
                filters.Add(filtro);
            }
            #endregion
            #region Nombre
            if (!string.IsNullOrWhiteSpace(tbNombre.Text))
            {
                filtro = new UsuarioFilter(@"ToLower(it.nombre) like '%' + @Name + '%'");
                filtro.Parameters.Add(new ObjectParameter("Name", tbNombre.Text.ToLower()));
                filters.Add(filtro);
            }
            #endregion
            #region Apellido 1
            if (!string.IsNullOrWhiteSpace(tbApellido1.Text))
            {
                filtro = new UsuarioFilter(@"ToLower(it.apellido1) like '%' + @Ap1 + '%'");
                filtro.Parameters.Add(new ObjectParameter("Ap1", tbApellido1.Text.ToLower()));
                filters.Add(filtro);
            }
            #endregion
            #region Apellido 2
            if (!string.IsNullOrWhiteSpace(tbApellido2.Text))
            {
                filtro = new UsuarioFilter(@"ToLower(it.apellido2) like '%' + @Ap2 + '%'");
                filtro.Parameters.Add(new ObjectParameter("Ap2", tbApellido2.Text.ToLower()));
                filters.Add(filtro);
            }
            #endregion
            #region Administrador
            if (cbAdmin.IsChecked != null)
            {
                if (cbAdmin.IsChecked == true)
                    filtro = new UsuarioFilter(@"it IS OF(ModeloGaleriaNET.Administrador)");
                else
                    filtro = new UsuarioFilter(@"it IS NOT OF (ModeloGaleriaNET.Administrador)");

                filters.Add(filtro);
            }
            #endregion

            success = true;
            Close();
        }
    }
}
